/*
 * Created on 24/06/2005isaoEntrega b->>
 *
 */
package com.master.bd.calculo_frete;

import java.sql.*;
import com.master.ed.*;
import com.master.util.*;
import com.master.util.bd.*;

public class Calcula_Cotacao extends Calcula_Frete{

  public Calcula_Cotacao (ExecutaSQL executasql) {
        super(executasql);
        // // ("Calcula_Frete_Rodov01 1");
    util = new Utilitaria (this.executasql);
  }

  public CotacaoED calcula_cotacao (CotacaoED edCotacao) throws Excecoes {

    // //  ("  calcula_ COTACAO " + edCotacao.getOID_Cotacao());

    Calcula_FreteED ed = new Calcula_FreteED ();

    ed = carregaParametros (edCotacao);
    ed = totalizaPesoCotacao (ed);
    ed = defineCriterioPeso (ed);

    inicializaCotacao (ed);


    if ("T".equals (ed.getDM_Tipo_Calculo ())) {// TAbela
      defineModeloCalculo (ed);
      calculaTaxaDespacho (ed);
      //calculaTaxaColeta (ed);
      calculaTaxaEntrega (ed);
    }

    if ("C".equals (ed.getDM_Tipo_Calculo ())) {// calcu p/custo
      calculaCotacaoPeloCusto(ed);
      oid_Tabela_Frete="";
    }

    ed = totalizaMovimentoReceita (ed);

    if (ed.getVL_Total_Frete () > 0) {
      calculaCustoFinanceiro (ed);

      ed = this.calculaICMS (ed);

      calculaTotalFrete (ed);

      calculaSeguro (ed);
      calculaPIS (ed);
      calculaCOFINS (ed);
      calculaCustoColeta (ed);
      calculaCustoEntrega (ed);
      ed = calculaPrevisaoEntrega (ed);

      ed = totalizaMovimentoCusto (ed);

      totalizaCotacao (ed);

      edCotacao.setVL_TOTAL_FRETE (ed.getVL_Total_Frete ());
      edCotacao.setVL_Frete (ed.getVL_Total_Frete ());
      edCotacao.setVL_Frete_Calculado(VL_Frete_Calculado);
      edCotacao.setVL_ICMS (ed.getVL_ICMS () + ed.getVL_ICMS_Antecipado ());
      edCotacao.setPE_Aliquota_ICMS (ed.getPE_Aliquota_ICMS ());
      edCotacao.setVL_Total_Custo(VL_Total_Custo);
      edCotacao.setVL_Desconto(VL_Desconto);
      edCotacao.setOID_Tabela_Frete (oid_Tabela_Frete);

    }
    else {
      Calcula_FreteED ed2 = new Calcula_FreteED ();
      ed2.setOID_Conhecimento (ed.getOID_Conhecimento ());
      ed2.setDM_Tipo_Calculo ("N");
      ed2.setDM_Tipo_Tabela_Frete ("N");
      ed2.setDM_ICMS_Contribuinte ("N");
      edCotacao.setVL_Frete (0);
      edCotacao.setVL_ICMS (0);
      edCotacao.setPE_Aliquota_ICMS (0);
      edCotacao.setVL_Total_Custo(0);
      edCotacao.setOID_Tabela_Frete ("");
      this.totalizaCotacao (ed2);
    }
    return edCotacao;
  }


  private Calcula_FreteED totalizaPesoCotacao (Calcula_FreteED ed) throws Excecoes {
    String sql = null;
    NR_Peso_Cub = ed.getNR_Peso();
    if (ed.getNR_Peso_Cubado()>0 && ed.getNR_Peso_Cubado()>ed.getNR_Peso()){
      NR_Peso_Cub = ed.getNR_Peso_Cubado();
    }

    DM_Unidade_Produto = "P";

    // //  ("-------------totalizaPesoCotacao-->> " +ed.getOID_Cotacao () );

    try {

      sql = " SELECT Produtos.DM_Unidade " +
          " FROM   Produtos, Cotacoes ";
      sql += " WHERE  Cotacoes.OID_Produto = Produtos.OID_Produto ";
      sql += " AND    Cotacoes.OID_Cotacao = '" + ed.getOID_Cotacao () + "'";

      rs = this.executasql.executarConsulta (sql);

      while (rs.next ()) {
        DM_Unidade_Produto = rs.getString ("DM_Unidade");
      }

    // //  ("-------------totalizaPesoCotacao-->> " +ed.getOID_Cotacao () );

      if ("R".equals (ed.getDM_Tipo_Transporte ()) && parametro_FixoED.getNR_Peso_Cubado () > 0) {
        long NR_Peso_Cubado = parametro_FixoED.getNR_Peso_Cubado ();
        if (ed.getNR_Cubagem () > 0) {
          // //  ("DM FRETE =>>fatorCubagem>>" + NR_Peso_Cubado);
          sql = " SELECT NR_Peso_Cubado FROM Clientes ";
          sql += " WHERE Clientes.NR_Peso_Cubado > 0 ";
          sql += " AND   Clientes.OID_Cliente = '" + ed.getOID_Pessoa_Pagador () + "'";
          rs = this.executasql.executarConsulta (sql);
          while (rs.next ()) {
            NR_Peso_Cubado = rs.getLong ("NR_Peso_Cubado");
          }
          // //  ("DM FRETE =>>fatorCubagem 2>> " + NR_Peso_Cubado);
          NR_Peso_Cub = ed.getNR_Cubagem () * NR_Peso_Cubado;
        }
      }

      if ("A".equals (ed.getDM_Tipo_Transporte ()) && ed.getNR_Cubagem () > 0) {
        NR_Peso_Cub = ed.getNR_Cubagem ();
      }


      if (ed.getNR_Cubagem () > 0 && ed.getDM_Tipo_Conhecimento ().equals ("C")) { /// cubagen pelo cto

        NR_Peso_Cub = ed.getNR_Cubagem ();
      }

      // //  ("NR_Peso_Cub>>" + NR_Peso_Cub);

      ed.setNR_Peso_Cubado (NR_Peso_Cub);

    }
    catch (SQLException e) {
      throw new Excecoes (e.getMessage () , e , getClass ().getName () , "calcula_freteParte1(Calcula_FreteED ed)");
    }
    return ed;
  }


  private void inicializaCotacao (Calcula_FreteED ed) throws Excecoes {
    String sql = null;

    try {
      ed.setDM_Tipo_Calculo ("T"); //tabela

      sql = " SELECT Movimentos_Conhecimentos.oid_movimento_conhecimento, " +
          "        Movimentos_Conhecimentos.DM_Lancado_Gerado, " +
          "        Tipos_Movimentos.DM_Calculo_Misto, " +
          "        Tipos_Movimentos.DM_Tipo_Movimento  " +
          " FROM   Movimentos_Conhecimentos, Tipos_Movimentos " +
          " WHERE  Movimentos_Conhecimentos.oid_Tipo_Movimento = Tipos_Movimentos.oid_Tipo_Movimento " +
          " AND    Movimentos_Conhecimentos.oid_Cotacao ='" + ed.getOID_Cotacao () + "'";

      // //  (sql);

      rs = this.executasql.executarConsulta (sql);
      while (rs.next ()) {
        // //  (" oid_movimento_conhecimento=> " + rs.getString ("oid_movimento_conhecimento"));
        // //  (" DM_Lancado_Gerado=> " + rs.getString ("DM_Lancado_Gerado"));
        // //  (" DM_Calculo_Misto=> " + rs.getString ("DM_Calculo_Misto"));

        if ("G".equals (rs.getString ("DM_Lancado_Gerado")) && !"M".equals (rs.getString ("DM_Calculo_Misto"))) {
          sql = " DELETE FROM Movimentos_Conhecimentos " +
                " WHERE oid_movimento_conhecimento = '" + rs.getString ("oid_movimento_conhecimento") + "'";
          // //  (sql);
          executasql.executarUpdate (sql);
        }
        if ("L".equals (rs.getString ("DM_Lancado_Gerado"))) {
          ed.setDM_Tipo_Calculo ("I"); //frete inf
          if ("D".equals (rs.getString ("DM_Tipo_Movimento"))) {
            ed.setDM_Tipo_Calculo ("C"); //CUSTO
          }
        }

      }

      sql = " UPDATE Cotacoes SET ";
      sql += " VL_FRETE_PESO = 0";
      sql += " ,VL_FRETE_VALOR = 0";
      sql += " ,PE_ALIQUOTA_ICMS= 0";
      sql += " ,VL_SEC_CAT = 0";
      sql += " ,VL_PEDAGIO = 0";
      sql += " ,VL_DESPACHO = 0";
      sql += " ,VL_PIS      = 0";
      sql += " ,VL_COFINS   = 0";
      sql += " ,VL_OUTROS1 = 0";
      sql += " ,VL_TOTAL_FRETE = 0";
      sql += " ,VL_BASE_CALCULO_ICMS = 0";
      sql += " ,VL_ICMS = 0";
      sql += " ,DM_Tipo_Calculo = '' ";
      sql += " ,oid_Tabela_Frete = '' ";
      sql += " WHERE OID_Cotacao = '" + ed.getOID_Cotacao () + "'";

// // ("ZERA COTACAO" + sql);

      executasql.executarUpdate (sql);
    }
    catch (SQLException e) {
      throw new Excecoes (e.getMessage () , e , getClass ().getName () , "inicializaConhecimento(Calcula_FreteED ed)");
    }
  }



  protected void totalizaCotacao (Calcula_FreteED ed) throws Excecoes {
    try {
      sql = " UPDATE Cotacoes SET ";
      sql += "  oid_tabela_frete = '" + oid_Tabela_Frete + "'";
      sql += " ,PE_ALIQUOTA_ICMS = " + ed.getPE_Aliquota_ICMS ();
      sql += " ,VL_FRETE_PESO = " + ed.getVL_Frete_Peso ();
      sql += " ,VL_DESCONTO = " + VL_Desconto;
      sql += " ,VL_FRETE_VALOR = " + VL_AD_Valorem;
      sql += " ,VL_SEC_CAT = " + VL_SEC_CAT;
      sql += " ,VL_PEDAGIO = " + VL_Pedagio;
      sql += " ,VL_DESPACHO = " + VL_Despacho;
      sql += " ,VL_PIS = " + VL_PIS;
      sql += " ,VL_COFINS = " + VL_COFINS;
      sql += " ,VL_OUTROS1 = " + VL_Outros1;
      sql += " ,VL_TOTAL_FRETE = " + ed.getVL_Total_Frete ();
      sql += " ,VL_TOTAL_CUSTO = " + VL_Total_Custo;
      sql += " ,VL_BASE_CALCULO_ICMS = " + ed.getVL_Base_ICMS ();
      sql += " ,VL_ICMS = " + ed.getVL_ICMS ();
      sql += " ,VL_FRETE_CALCULADO = " + VL_Frete_Calculado;

      if (util.doValida (ed.getDT_Previsao_Entrega ())) {
        sql += " ,DT_Previsao_Entrega = '" + ed.getDT_Previsao_Entrega () + "'";
      }
      sql += " ,DM_Tipo_Calculo = '" + ed.getDM_Tipo_Calculo () + "'";

      sql += " WHERE OID_Cotacao = '" + ed.getOID_Cotacao () + "'";

      // //  ("fim de calculo cotacao  " + sql);

      executasql.executarUpdate (sql);
    }

    catch (SQLException exc) {
      throw new Excecoes (exc.getMessage () , exc , getClass ().getName () , "cotacao");
    }
  }

  protected void incluiMovimentoCotacao (Calcula_FreteED ed) throws Excecoes {
    try {



      sql = " UPDATE Cotacoes SET ";
      sql += "  PE_ALIQUOTA_ICMS = " + ed.getPE_Aliquota_ICMS ();
      sql += " ,VL_FRETE_PESO = " + ed.getVL_Frete_Peso ();
      sql += " ,VL_FRETE_VALOR = " + VL_AD_Valorem;
      sql += " ,VL_SEC_CAT = " + VL_SEC_CAT;
      sql += " ,VL_PEDAGIO = " + VL_Pedagio;
      sql += " ,VL_DESPACHO = " + VL_Despacho;
      sql += " ,VL_PIS = " + VL_PIS;
      sql += " ,VL_COFINS = " + VL_COFINS;
      sql += " ,VL_OUTROS1 = " + VL_Outros1;
      sql += " ,VL_TOTAL_FRETE = " + ed.getVL_Total_Frete ();
      sql += " ,VL_BASE_CALCULO_ICMS = " + ed.getVL_Base_ICMS ();
      sql += " ,VL_ICMS = " + ed.getVL_ICMS ();

      if (util.doValida (ed.getDT_Previsao_Entrega ())) {
        sql += " ,DT_Previsao_Entrega = '" + ed.getDT_Previsao_Entrega () + "'";
      }
      sql += " WHERE OID_Cotacao = '" + ed.getOID_Cotacao () + "'";

      // //  ("fim de calculo cotacao  " + sql);

      executasql.executarUpdate (sql);
    }

    catch (SQLException exc) {
      throw new Excecoes (exc.getMessage () , exc , getClass ().getName () , "cotacao");
    }
  }



  protected Calcula_FreteED carregaParametros (CotacaoED edCotacao) throws Excecoes {
    Calcula_FreteED ed = new Calcula_FreteED ();
    try {
      ed.setDM_Responsavel_Cobranca (edCotacao.getDM_Responsavel_Cobranca ());
      ed.setDM_Tipo_Pagamento (edCotacao.getDM_Tipo_Pagamento ());
      ed.setDM_Tipo_Desconto_Pedagio (edCotacao.getDM_Tipo_Desconto_Pedagio ());
      ed.setDM_Tipo_Conhecimento ("1");
      ed.setDT_Emissao (edCotacao.getDT_Emissao ());
      ed.setDT_Previsao_Entrega (edCotacao.getDT_Previsao_Entrega ());
      ed.setHR_Previsao_Entrega (edCotacao.getHR_Previsao_Entrega ());
      ed.setOID_Modal (edCotacao.getOID_Modal ());
      ed.setDM_Tipo_Tabela_Frete (edCotacao.getDM_Tipo_Tabela_Frete ());

      // //  ("  carregaParametros getDM_Tipo_Tabela_Frete ->>" + ed.getDM_Tipo_Tabela_Frete ());

      ed.setDM_Tipo_Coleta (edCotacao.getDM_Tipo_Coleta ());
      ed.setDM_Tipo_Entrega (edCotacao.getDM_Tipo_Entrega ());
      ed.setDM_Tipo_Transporte (edCotacao.getDM_Tipo_Transporte ());

      ed.setOID_Pessoa (edCotacao.getOID_Pessoa ());
      ed.setOID_Pessoa_Consignatario (edCotacao.getOID_Pessoa_Consignatario ());
      ed.setOID_Pessoa_Redespacho (edCotacao.getOID_Pessoa_Redespacho ());
      ed.setOID_Pessoa_Destinatario (edCotacao.getOID_Pessoa_Destinatario ());
      ed.setOID_Pessoa_Pagador (edCotacao.getOID_Pessoa_Pagador ());
      ed.setOID_Pessoa_Pagador_Tabela (edCotacao.getOID_Pessoa_Pagador ());
      ed.setOID_Produto (edCotacao.getOID_Produto ());

      sql = " SELECT oid_Produto_Tabela_Frete " +
          " FROM  Produtos " +
          " WHERE Produtos.oid_Produto = " + edCotacao.getOID_Produto () +
          " AND   Produtos.oid_Produto_Tabela_Frete is not null ";
      rs = this.executasql.executarConsulta (sql);
      while (rs.next ()) {
        ed.setOID_Produto (rs.getLong ("oid_Produto_Tabela_Frete"));
      }

      ed.setOID_Unidade (edCotacao.getOID_Unidade ());
      ed.setOID_Coleta (edCotacao.getOID_Coleta ());
      ed.setOID_Empresa (edCotacao.getOID_Empresa ());
      ed.setOID_Cotacao (edCotacao.getOID_Cotacao ());
      ed.setOID_Cidade_Remetente (edCotacao.getOID_Cidade ());
      ed.setOID_Cidade_Destinatario (edCotacao.getOID_Cidade_Destino ());

      ed.setNR_Cubagem (edCotacao.getNR_Cubagem ());

      ed.setNR_Peso (edCotacao.getNR_Peso ());
      ed.setNR_Peso_Cubado (edCotacao.getNR_Peso_Cubado ());
      // //  ("  getNR_Peso_Cubado ->>" + edCotacao.getNR_Peso_Cubado ());
      // //  ("  setNR_Cubagem_Total ->>" + ed.getNR_Cubagem_Total ());

      ed.setPE_Desconto (edCotacao.getPE_Desconto ());

      // //  ("  setPE_Desconto ->>" + ed.getPE_Desconto ());


      ed.setVL_Nota_Fiscal (edCotacao.getVL_Nota_Fiscal ());
      ed.setNR_Volumes (edCotacao.getNR_Volumes ());

      ed.setDM_Tipo_Tarifa (edCotacao.getDM_Tipo_Tarifa ());

      ed.setPE_Carga_Expressa (edCotacao.getPE_Carga_Expressa ());

      ed.setOID_Cidade_Origem (edCotacao.getOID_Cidade ());

      ed.setVL_Frete_Peso (edCotacao.getVL_FRETE_PESO ());
      ed.setVL_Pedagio (edCotacao.getVL_PEDAGIO ());
      ed.setVL_Total_Frete (edCotacao.getVL_TOTAL_FRETE ());

      sql = " SELECT Estados.oid_Estado, Regioes_Estados.oid_Regiao_Estado, Regioes_Estados.oid_Subregiao from Cidades, Regioes_Estados, Estados " +
          " WHERE cidades.oid_regiao_Estado = regioes_estados.oid_regiao_estado " +
          " AND regioes_estados.oid_Estado = estados.oid_Estado " +
          " AND cidades.oid_cidade = " + ed.getOID_Cidade_Remetente ();
      rs = this.executasql.executarConsulta (sql);

      while (rs.next ()) {
        ed.setOID_Estado_Origem (rs.getLong ("oid_Estado"));
        ed.setOID_Regiao_Origem (rs.getLong ("oid_Regiao_Estado"));
        ed.setOID_Subregiao_Origem (rs.getLong ("oid_Subregiao"));
      }

      ed.setOID_Cidade_Destino (edCotacao.getOID_Cidade_Destino ());
      ed.setDM_Tipo_Localizacao ("I");
      ed.setDM_Suframa ("N");
      ed.setDM_Fluvial ("N");

      sql = " SELECT cidades.DM_TIPO_LOCALIZACAO, cidades.DM_SUFRAMA, cidades.DM_FLUVIAL, Estados.oid_Estado, Regioes_Estados.oid_Regiao_Estado, Regioes_Estados.oid_Subregiao from Cidades, Regioes_Estados, Estados " +
          " WHERE cidades.oid_regiao_Estado = regioes_estados.oid_regiao_estado " +
          " AND regioes_estados.oid_Estado = estados.oid_Estado " +
          " AND cidades.oid_cidade = " + ed.getOID_Cidade_Destino ();
      rs = this.executasql.executarConsulta (sql);

      while (rs.next ()) {
        ed.setOID_Estado_Destino (rs.getLong ("oid_Estado"));
        ed.setOID_Regiao_Destino (rs.getLong ("oid_Regiao_Estado"));
        ed.setOID_Subregiao_Destino (rs.getLong ("oid_Subregiao"));
        ed.setDM_Tipo_Localizacao (rs.getString ("DM_TIPO_LOCALIZACAO"));
        ed.setDM_Suframa (rs.getString ("DM_SUFRAMA"));
        ed.setDM_Fluvial (rs.getString ("DM_FLUVIAL"));
      }

      ed.setPE_PIS_COFINS (parametro_FixoED.getPE_Aliquota_COFINS ());
      ed.setDM_PIS_COFINS (parametro_FixoED.getDM_Calcula_PIS_COFINS ());
      ed.setDM_Isencao_ICMS ("N");
      ed.setDM_Isencao_Seguro ("N");
      ed.setDM_Inclui_Icms_Parcela_CTRC ("N");
      ed.setCD_Grupo_CFO ("351");
      ed.setNM_Inscricao_Estadual ("9999999999999");

      sql = " SELECT Pessoas.NM_Inscricao_Estadual, " +
          " Clientes.DM_PIS_COFINS, " +
          " Clientes.PE_PIS_COFINS, " +
          " Clientes.DM_Isencao_ICMS," +
          " Clientes.DM_Isencao_Seguro, " +
          " Clientes.DM_rctrc, " +
          " Clientes.DM_rctr_vi, " +
          " Clientes.DM_rctr_dc, " +
          " Clientes.DM_rcta, " +
          " Ramos_Atividades.CD_Grupo_CFO, " +
          " Clientes.DM_Inclui_Icms_Parcela_CTRC " +
          " FROM Clientes, Ramos_Atividades, Pessoas " +
          " WHERE  Clientes.oid_ramo_atividade = Ramos_Atividades.oid_ramo_atividade " +
          " AND    Clientes.OID_Pessoa = Pessoas.OID_Pessoa " +
          " AND    Clientes.OID_Pessoa = '" + ed.getOID_Pessoa_Pagador () + "'";
      rs = this.executasql.executarConsulta (sql);
      while (rs.next ()) {
        ed.setDM_Isencao_ICMS (rs.getString ("DM_Isencao_ICMS"));
        ed.setDM_rctrc (rs.getString ("DM_rctrc"));
        ed.setDM_rctr_vi (rs.getString ("DM_rctr_vi"));
        ed.setDM_rctr_dc (rs.getString ("DM_rctr_dc"));
        ed.setDM_rcta (rs.getString ("DM_rcta"));

        ed.setDM_Inclui_Icms_Parcela_CTRC (rs.getString ("DM_Inclui_Icms_Parcela_CTRC"));
        ed.setNM_Inscricao_Estadual (rs.getString ("NM_Inscricao_Estadual"));

        ed.setPE_PIS_COFINS (rs.getDouble ("PE_PIS_COFINS"));
        if (JavaUtil.doValida (rs.getString ("CD_Grupo_CFO"))) {
          ed.setCD_Grupo_CFO (rs.getString ("CD_Grupo_CFO"));
        }
        if (rs.getString ("DM_PIS_COFINS") != null && !rs.getString ("DM_PIS_COFINS").equals ("") && !rs.getString ("DM_PIS_COFINS").equals ("null")) {
          ed.setDM_PIS_COFINS (rs.getString ("DM_PIS_COFINS"));

        }
      }

      // //  ("ed.getOID_Cidade_Destino()=" + ed.getOID_Cidade_Destino () + " ISENCAO ICMS=" + ed.getDM_Isencao_ICMS ());

    }

    catch (SQLException exc) {
      throw new Excecoes (exc.getMessage () , exc , getClass ().getName () , "carregaParametros");
    }

    return ed;
  }

  protected void calculaCotacaoPeloCusto (Calcula_FreteED ed) throws Excecoes {
    try {
      VL_Total_Custo = 0;
      VL_Movimento_Frete=0;
      double pe_taxa2=100, pe_taxa1=30;

      sql = " SELECT SUM (VL_Movimento) as VL_Total_Custo " +
          " FROM   Movimentos_Conhecimentos, Tipos_Movimentos " +
          " WHERE  Movimentos_Conhecimentos.oid_Tipo_Movimento = Tipos_Movimentos.oid_Tipo_Movimento " +
          " AND    Movimentos_Conhecimentos.DM_Lancado_Gerado = 'L' " +
          " AND    Tipos_Movimentos.DM_Tipo_Movimento = 'D' " +
          " AND    Movimentos_Conhecimentos.oid_Cotacao ='" + ed.getOID_Cotacao () + "'";
      // //  (sql);

      rs = this.executasql.executarConsulta (sql);
      if (rs.next ()) {
        VL_Total_Custo = rs.getDouble ("VL_Total_Custo");

        VL_Total_Custo = VL_Total_Custo * (1 + (5.07 / 100));

        Tipo_Movimento = "COT";
        // // ("VL_Total_Custo->"+VL_Total_Custo);

        VL_Movimento_Frete  = VL_Total_Custo * (1+(pe_taxa1/100));
        // // ("VL_Movimento_Frete1->"+VL_Movimento_Frete);

        VL_Movimento_Frete = VL_Movimento_Frete * (1+(pe_taxa2/100));




        // // ("VL_Movimento_Frete OK->"+VL_Movimento_Frete);

        rs = this.executasql.executarConsulta (sql);
        while (rs.next ()) {
          ed.setCD_Tipo_Movimento (Tipo_Movimento);
          ed.setVL_Movimento (VL_Movimento_Frete);
          this.incluiMovimento (ed);
        }
      }

      double pe_aliquota_rctrc = 0;
      double pe_aliquota_rctr_vi = 0;
      double pe_aliquota_rctr_dc = 0;
      double pe_aliquota_rcta = 0;
      // //  ("TAXAS: getDM_Isencao_Seguro=" + ed.getDM_Isencao_Seguro ());

        // // ("CUSTO SEGURO getVL_Nota_Fiscal->"+ed.getVL_Nota_Fiscal());
        // // ("CUSTO getDM_Isencao_Seguro ->"+ed.getDM_Isencao_Seguro());

          sql = " SELECT * FROM Taxas ";
          sql += " WHERE Taxas.OID_Estado = " + ed.getOID_Estado_Origem ();
          sql += " AND   Taxas.OID_Estado_Destino = " + ed.getOID_Estado_Destino ();

        // // ("CUSTO getDM_Isencao_Seguro ->"+sql);

          rs = this.executasql.executarConsulta (sql);
          while (rs.next ()) {
            pe_aliquota_rctrc = rs.getDouble ("pe_aliquota_rctrc");
            pe_aliquota_rctr_vi = rs.getDouble ("pe_aliquota_rctr_vi");
            pe_aliquota_rctr_dc = rs.getDouble ("pe_aliquota_rctr_dc");
            pe_aliquota_rcta = rs.getDouble ("pe_aliquota_rcta");
          }
          // //  ("TAXAS: pe_aliquota_rctrc=" + pe_aliquota_rctrc + " pe_aliquota_rctr_dc=" + pe_aliquota_rctr_dc + " pe_aliquota_rctr_vi=" + pe_aliquota_rctr_vi + " pe_aliquota_rcta=" + pe_aliquota_rcta);
          // //  ("Cliente: ed.getDM_rctrc()=" + ed.getDM_rctrc () + " ed.getDM_rctr_dc()=" + ed.getDM_rctr_dc () + " ed.getDM_rctr_vi()=" + ed.getDM_rctr_vi () + " ed.getDM_rcta()=" + ed.getDM_rcta ());

          if ("N".equals (ed.getDM_rcta ())) {
            pe_aliquota_rcta = 0;
          }
          if ("N".equals (ed.getDM_rctr_dc ())) {
            pe_aliquota_rctr_dc = 0;
          }
          if ("N".equals (ed.getDM_rctr_vi ())) {
            pe_aliquota_rctr_vi = 0;
          }
          if ("N".equals (ed.getDM_rctrc ())) {
            pe_aliquota_rctrc = 0;
          }
          if (pe_aliquota_rctr_dc > 0) {
            VL_Seguro = ( (ed.getVL_Nota_Fiscal () * pe_aliquota_rctr_dc) / 100);

            VL_Seguro = VL_Seguro * (1 + (pe_taxa1 / 100));
            VL_Seguro = VL_Seguro * (1 + (pe_taxa2 / 100));
            VL_Seguro = VL_Seguro * (1 + (5.07 / 100));

            Tipo_Movimento = "RCC";
            ed.setCD_Tipo_Movimento (Tipo_Movimento);
            ed.setVL_Movimento (VL_Seguro);
            this.incluiMovimento (ed);
          }
          if (pe_aliquota_rctrc > 0) {
            VL_Seguro = ( (ed.getVL_Nota_Fiscal () * pe_aliquota_rctrc) / 100);

            VL_Seguro = VL_Seguro * (1 + (pe_taxa1 / 100));
            VL_Seguro = VL_Seguro * (1 + (pe_taxa2 / 100));
            VL_Seguro = VL_Seguro * (1 + (5.07 / 100));

            Tipo_Movimento = "SCC";
            ed.setCD_Tipo_Movimento (Tipo_Movimento);
            ed.setVL_Movimento (VL_Seguro);
            this.incluiMovimento (ed);
          }


    }

    catch (SQLException exc) {
      throw new Excecoes (exc.getMessage () , exc , getClass ().getName () , "calculaTaxaDespacho");
    }
  }

}
